#ifndef INC_CONFIG_H
#define INC_CONFIG_H

#include <string>
#include <map>
#include <vector>
#include "BaseTypes.h"
/*********************************************/
class Config
{
private:
	// Vars
	bool				fileParse;	// true if a file was allready parsed false if not
	static Config* 			pInstance;	// Only available instance of config
	std::map<std::string,sint32>	values;		// relational map between the value description and the value itself
	std::vector<std::string>	minCfg;		// The list with strings that is required for correct configuration

protected:
	// Methods
	Config() {};					// Constructor
	Config( const Config& );			// Copy Constructor
	Config& operator=(const Config&);		// Assignment operator

public:
	// Methods
	void parseFile( const std::string& );		// Read a configuration file
	void addMinimumConfig( const std::string& );	// Adds a string identifier to the minimum configuration
	bool isCompleteConfig();			// Checks wether all minimum config values are present
	bool test( const std::string& );		// Tests wether a value is present or not
	sint32 get( const std::string& );		// Value return
	void set( const std::string&, sint32);		// Sets a value		

	// Construction & Destruction
	static Config* Instance();			// Instance retrieval method
	static void Destruct();				// Explicit destruction call on the pInstance object
	~Config();					// Destructor
};
/*********************************************/
#endif // INC_CONFIG_H